﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LeaderCCSLaserUI.Models
{
    public class VisionProgramDisp : DispBase
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    public class VisionFunctionDisp : DispBase
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Alias { get; set; }
        public string IconPath { get; set; }
    }
    public class VisionProjectDisp : DispBase
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Alias { get; set; }
        public string IconPath { get; set; }
        public int ProgramId { get; set; }
        public int FunctionId { get; set; }
        public int PcsOrder { get; set; }
        public string Parameter { get; set; }
        private DispReuslt result;

        public DispReuslt Result
        {
            get { return result; }
            set
            {
                if (result != value)
                {
                    result = value;
                    OnPropertyChanged();
                }
            }
        }

    }
    public class GenShapeModelParam
    {
        public int NumLevels { get; set; }
        public double AngleStart { get; set; }
        public double AngleEnd { get; set; }
        public double AngleStep { get; set; }
        public int ThresholdLower { get; set; }
        public int ThresholdUpper { get; set; }
        public int Contrast { get; set; }
        public int MinContrast { get; set; }
    }
    public class GenNccModelParam
    {
        public double AngleStart { get; set; }
        public double AngleEnd { get; set; }
    }
    public class ShapeModelParam
    {
        public int NumLevels { get; set; }
        public double AngleStart { get; set; }
        public double AngleEnd { get; set; }
        public string FileName { get; set; }
        public double MinScore { get; set; }
    }
    public class NccModelParam
    {
        public int NumLevels { get; set; }
        public double AngleStart { get; set; }
        public double AngleEnd { get; set; }
        public string FileName { get; set; }
        public double MinScore { get; set; }
    }
    public class ShapeModelParamDisp : DispBase
    {
        public int NumLevels { get; set; }
        public double AngleStart { get; set; }
        public double AngleEnd { get; set; }
        private string fileName;

        public string FileName
        {
            get { return fileName; }
            set
            {
                if (fileName != value)
                {
                    fileName = value;
                    OnPropertyChanged();
                }
            }
        }

        public double MinScore { get; set; }
    }
    public class NccModelParamDisp : DispBase
    {
        public int NumLevels { get; set; }
        public double AngleStart { get; set; }
        public double AngleEnd { get; set; }
        private string fileName;

        public string FileName
        {
            get { return fileName; }
            set
            {
                if (fileName != value)
                {
                    fileName = value;
                    OnPropertyChanged();
                }
            }
        }

        public double MinScore { get; set; }
    }
    public class PreProcessingParam
    {
        public bool IsUseEmphasize { get; set; }
        public int EmphasizeMaskWidth { get; set; }
        public int EmphasizeMaskHeight { get;set; }
        public double EmphasizeFactor { get; set; }
    }
    public class BlobCircleParam
    {
        public double Row { get; set; }
        public double Column { get; set; }
        public double Radius { get; set; }
        public int MinGray { get; set; }
        public int MaxGray { get; set; }
        public double OpeningRadius { get; set; }
        public double SelectAreaMin { get; set; }
        public double SelectAreaMax { get; set; }
        public double SelectRadiusMin { get; set; }
        public double SelectRadiusMax { get; set; }
    }
    public class BlobCircleParamDisp : DispBase
    {
        private double row;

        public double Row
        {
            get { return row; }
            set
            {
                if (row != value)
                {
                    row = value;
                    OnPropertyChanged();
                }
            }
        }
        private double column;

        public double Column
        {
            get { return column; }
            set
            {
                if (column != value)
                {
                    column = value;
                    OnPropertyChanged();
                }
            }
        }
        private double radius;

        public double Radius
        {
            get { return radius; }
            set
            {
                if (radius != value)
                {
                    radius = value;
                    OnPropertyChanged();
                }
            }
        }

        public int MinGray { get; set; }
        public int MaxGray { get; set; }
        public double OpeningRadius { get; set; }
        public double SelectAreaMin { get; set; }
        public double SelectAreaMax { get; set; }
        public double SelectRadiusMin { get; set; }
        public double SelectRadiusMax { get; set; }
    }
    public class TwoLineIntersectionParam
    {
        public double ST_Row { get; set; }//基准位置
        public double ST_Column { get; set; }
        public double L1_StartRow { get; set; }
        public double L1_StartColumn { get; set; }
        public double L1_EndRow { get; set; }
        public double L1_EndColumn { get; set; }
        public double L1_MeasureLength1 { get; set; }
        public double L1_MeasureLength2 { get; set; }
        public int L1_MeasureThreshold { get; set; }
        public double L1_MeasureSigma { get; set; }
        public MeasureSelecteEnum L1_MeasureSelect { get; set; }
        public MeasureTransitionEnum L1_MeasureTransition { get; set; }
        public int L1_NumMeasures { get; set; }
        public double L1_MinScore { get; set; }
        public double L2_StartRow { get; set; }
        public double L2_StartColumn { get; set; }
        public double L2_EndRow { get; set; }
        public double L2_EndColumn { get; set; }
        public double L2_MeasureLength1 { get; set; }
        public double L2_MeasureLength2 { get; set; }
        public int L2_MeasureThreshold { get; set; }
        public double L2_MeasureSigma { get; set; }
        public MeasureSelecteEnum L2_MeasureSelect { get; set; }
        public MeasureTransitionEnum L2_MeasureTransition { get; set; }
        public int L2_NumMeasures { get; set; }
        public double L2_MinScore { get; set; }
    }
    public class BlobRectangleParam
    {
        public bool IsCheckNi { get; set; }
        public int ClosingWidth { get; set; }
        public double SelectRecAreaMin { get; set; }
        public double SelectRecAreaMax { get; set; }
        public bool IsCheckLasered { get; set; }
        public double SelectLaserPadAreaMin { get; set; }
        public double SelectLaserPadAreaMax { get; set; }
        public double ST_Row { get; set; }
        public double ST_Column { get; set; }
        public double RecRow1 { get; set; }
        public double RecColumn1 { get; set; }
        public double RecRow2 { get; set; }
        public double RecColumn2 { get; set; }
    }
}
